Page({
  data: {
    userInfo: {
      avatarUrl: '',
      nickName: ''
    },
    phoneNumber: '',
    agreed: false,
    canLogin: false,
    loginBtnText: '登录',
    showAgreement: false,
    currentAgreement: {},
    agreements: {
      user: {
        title: '用户协议',
        content: '欢迎使用农家小炒小程序！\n\n1. 服务说明\n我们为用户提供餐饮预订、外卖配送等服务。\n\n2. 用户责任\n用户应提供真实、准确的个人信息，遵守相关法律法规。\n\n3. 隐私保护\n我们承诺保护用户隐私，不会泄露用户个人信息。\n\n4. 服务变更\n我们保留随时修改或终止服务的权利。\n\n5. 免责声明\n因不可抗力导致的服务中断，我们不承担责任。'
      },
      privacy: {
        title: '隐私政策',
        content: '农家小炒小程序隐私政策\n\n1. 信息收集\n我们收集您提供的姓名、手机号、地址等必要信息。\n\n2. 信息使用\n收集的信息仅用于提供服务，不会用于其他商业目的。\n\n3. 信息保护\n我们采用行业标准的安全措施保护您的信息。\n\n4. 信息共享\n除法律要求外，我们不会与第三方共享您的信息。\n\n5. 您的权利\n您有权查看、修改或删除您的个人信息。'
      }
    }
  },

  onLoad() {
    // 页面加载时检查是否已登录
    this.checkLoginStatus()
  },

  onShow() {
    // 页面显示时更新登录按钮状态
    this.updateLoginButton()
  },

  // 检查登录状态
  checkLoginStatus() {
    const app = getApp()
    const userInfo = app.globalData.userInfo
    
    if (userInfo && userInfo.nickName) {
      // 已登录，跳转到个人中心
      wx.redirectTo({
        url: '/pages/profile/profile'
      })
    }
  },

  // 选择头像
  chooseAvatar() {
    wx.chooseImage({
      count: 1,
      sizeType: ['compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        const tempFilePath = res.tempFilePaths[0]
        
        // 上传头像到服务器（这里只是示例，实际需要调用上传接口）
        this.uploadAvatar(tempFilePath)
      },
      fail: (err) => {
        console.log('选择头像失败', err)
        wx.showToast({
          title: '选择头像失败',
          icon: 'none'
        })
      }
    })
  },

  // 上传头像
  uploadAvatar(filePath) {
    wx.showLoading({
      title: '上传中...'
    })

    // 模拟上传过程
    setTimeout(() => {
      wx.hideLoading()
      
      this.setData({
        'userInfo.avatarUrl': filePath
      })
      
      wx.showToast({
        title: '头像上传成功',
        icon: 'success'
      })
      
      this.updateLoginButton()
    }, 1500)
  },

  // 昵称输入
  onNickNameInput(e) {
    this.setData({
      'userInfo.nickName': e.detail.value
    })
    this.updateLoginButton()
  },

  // 手机号输入
  onPhoneInput(e) {
    this.setData({
      phoneNumber: e.detail.value
    })
    this.updateLoginButton()
  },

  // 获取微信手机号
  getPhoneNumber(e) {
    if (e.detail.errMsg === 'getPhoneNumber:ok') {
      // 获取手机号成功，需要调用后端接口解密
      const { code } = e.detail
      
      wx.showLoading({
        title: '获取中...'
      })

      // 这里应该调用后端接口解密手机号
      // 示例：模拟获取手机号
      setTimeout(() => {
        wx.hideLoading()
        
        // 模拟获取到的手机号
        const mockPhone = '138****8888'
        this.setData({
          phoneNumber: mockPhone
        })
        
        wx.showToast({
          title: '手机号获取成功',
          icon: 'success'
        })
        
        this.updateLoginButton()
      }, 1000)
    } else {
      wx.showToast({
        title: '获取手机号失败',
        icon: 'none'
      })
    }
  },

  // 用户协议变更
  onAgreementChange(e) {
    this.setData({
      agreed: e.detail.value.includes('agree')
    })
    this.updateLoginButton()
  },

  // 显示用户协议
  showUserAgreement() {
    this.setData({
      showAgreement: true,
      currentAgreement: this.data.agreements.user
    })
  },

  // 显示隐私政策
  showPrivacyPolicy() {
    this.setData({
      showAgreement: true,
      currentAgreement: this.data.agreements.privacy
    })
  },

  // 隐藏协议弹窗
  hideAgreement() {
    this.setData({
      showAgreement: false,
      currentAgreement: {}
    })
  },

  // 阻止事件冒泡
  stopPropagation() {
    // 阻止事件冒泡
  },

  // 更新登录按钮状态
  updateLoginButton() {
    const { userInfo, phoneNumber, agreed } = this.data
    const canLogin = userInfo.nickName && phoneNumber && agreed
    
    this.setData({
      canLogin,
      loginBtnText: canLogin ? '登录' : '请完善信息'
    })
  },

  // 处理登录
  handleLogin() {
    if (!this.data.canLogin) {
      wx.showToast({
        title: '请完善所有信息',
        icon: 'none'
      })
      return
    }

    wx.showLoading({
      title: '登录中...'
    })

    // 模拟登录过程
    setTimeout(() => {
      wx.hideLoading()
      
      // 准备用户信息
      const userInfo = {
        ...this.data.userInfo,
        phoneNumber: this.data.phoneNumber,
        isLogin: true,
        loginTime: new Date().getTime()
      }

      // 使用全局登录方法
      const app = getApp()
      app.userLogin(userInfo)
      
      wx.showToast({
        title: '登录成功',
        icon: 'success'
      })

      // 跳转到"我的"页面（tabBar页面）
      setTimeout(() => {
        wx.switchTab({
          url: '/pages/profile/profile',
          success: () => {
            console.log('成功跳转到"我的"页面')
          },
          fail: (error) => {
            console.error('跳转到"我的"页面失败:', error)
            // 如果跳转失败，尝试使用redirectTo
            wx.redirectTo({
              url: '/pages/profile/profile'
            })
          }
        })
      }, 800) // 减少延迟时间
    }, 1500) // 减少登录过程时间
  },

  // 微信登录
  wechatLogin() {
    wx.getUserProfile({
      desc: '用于完善用户资料',
      success: (res) => {
        const userInfo = res.userInfo
        
        this.setData({
          'userInfo.avatarUrl': userInfo.avatarUrl,
          'userInfo.nickName': userInfo.nickName
        })
        
        wx.showToast({
          title: '微信信息获取成功',
          icon: 'success'
        })
        
        this.updateLoginButton()
        
        // 检查是否所有信息都已填写，如果是则自动登录
        this.checkAutoLogin()
      },
      fail: (err) => {
        console.log('获取微信信息失败', err)
        wx.showToast({
          title: '获取微信信息失败',
          icon: 'none'
        })
      }
    })
  },

  // 检查是否自动登录
  checkAutoLogin() {
    const { userInfo, phoneNumber, agreed } = this.data
    if (userInfo.nickName && phoneNumber && agreed) {
      // 所有信息都已填写，自动登录
      setTimeout(() => {
        this.handleLogin()
      }, 500)
    }
  },

  // 游客登录
  guestLogin() {
    wx.showModal({
      title: '游客登录',
      content: '游客登录将无法使用完整功能，是否继续？',
      success: (res) => {
        if (res.confirm) {
          // 设置默认游客信息
          const guestUserInfo = {
            avatarUrl: '/images/default-avatar.png',
            nickName: '游客用户',
            phoneNumber: '游客模式',
            isLogin: true,
            isGuest: true,
            loginTime: new Date().getTime()
          }
          
          this.setData({
            userInfo: {
              avatarUrl: guestUserInfo.avatarUrl,
              nickName: guestUserInfo.nickName
            },
            phoneNumber: guestUserInfo.phoneNumber,
            agreed: true
          })
          
          // 使用全局登录方法
          const app = getApp()
          app.userLogin(guestUserInfo)
          
          this.updateLoginButton()
          
          wx.showToast({
            title: '游客登录成功',
            icon: 'success'
          })

          // 跳转到"我的"页面（tabBar页面）
          setTimeout(() => {
            wx.switchTab({
              url: '/pages/profile/profile',
              success: () => {
                console.log('游客登录成功，已跳转到"我的"页面')
              },
              fail: (error) => {
                console.error('游客登录跳转失败:', error)
                // 如果跳转失败，尝试使用redirectTo
                wx.redirectTo({
                  url: '/pages/profile/profile'
                })
              }
            })
          }, 800) // 减少延迟时间
        }
      }
    })
  },

  // 分享给朋友
  onShareAppMessage() {
    return {
      title: '农家小炒 - 美味佳肴，触手可及',
      path: '/pages/login/login'
    }
  },

  // 分享到朋友圈
  onShareTimeline() {
    return {
      title: '农家小炒 - 美味佳肴，触手可及'
    }
  }
})
